
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <poll.h>
#include <signal.h>



static int fd;
static void sig_func(int sig)
{
	int val;
	read(fd, &val, 4);
	printf("get button : 0x%x\n", val);
}

int main(int argc, char **argv)
{
	int flags;

	/* 1. 判断参数 */
	if (argc != 2) 
	{
		printf("Usage: %s <dev>\n", argv[0]);
		return -1;
	}

	/*注册信号量*/
	signal(SIGIO,sig_func);
	
	/* 2. 打开文件 */
	fd = open(argv[1], O_RDWR);
	if (fd == -1)
	{
		printf("can not open file %s\n", argv[1]);
		return -1;
	}
	
	fcntl(fd,F_SETOWN,getpid()); //将文件与进程绑定起来
	flags = fcntl(fd,F_GETFL);		//获取文件的FLAG位
    fcntl(fd,F_SETFL,flags | FASYNC);  //修改文件的FLAG位，加上异步通信位

	while (1)
	{
		printf("leimengjiao I love you \n");
		sleep(5);
	}
	
	close(fd);
	
	return 0;
}
